package entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Type;

@Entity
@Table
public class Cotizacion implements Serializable{
	private int id;
	private Cliente cliente;
	private Date fechaRecepcion; // fechaInicio, segun CPR
	private Date fechaValidez;	// fechaFin, segun CPR
	private float precio;		// Precio, segun la CPR
	private String estadoCotizacion; // Por las dudas lo dejamos.
	private Collection<CotizacionItem> itemsCotizacion=new ArrayList<CotizacionItem>();
	
	@Id
	@GeneratedValue
	public int getId() {return id;}
	public void setId(int id) {this.id = id;}
	
	@Column
	@Type(type="date")
	public Date getFechaRecepcion() {return fechaRecepcion;}
	public void setFechaRecepcion (Date fechaRecepcion) {this.fechaRecepcion = fechaRecepcion;}
	
	@Column
	@Type(type="date")
	public Date getFechaValidez() {return fechaValidez;}
	public void setFechaValidez(Date fechaValidez) {this.fechaValidez = fechaValidez;}
	
	
	@Column
	public float getPrecio() {return precio;}
	public void setPrecio(float precio) {this.precio = precio;}
	
	@Column
	public String getEstadoCotizacion() {return estadoCotizacion;}
	public void setEstadoCotizacion(String estadoCotizacion) {this.estadoCotizacion = estadoCotizacion;}
	
	
	@OneToMany(fetch=(FetchType.EAGER),   mappedBy="cotizacion",cascade=(CascadeType.ALL))
	public Collection<CotizacionItem> getItemsCotizacion() {return itemsCotizacion;}
	public void setItemsCotizacion(Collection<CotizacionItem> itemsCotizacion) {this.itemsCotizacion = itemsCotizacion;}
	
	@ManyToOne
	public Cliente getCliente() {return cliente;}
	public void setCliente(Cliente cliente) {this.cliente = cliente;}
	
	
}
